home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / kcl / akcl / akcl1615.lha / h / u370_aix.h < prev    next >
C/C++ Source or Header  |  1992-04-11  |  5KB  |  189 lines

  1. /* Copyright William Schelter. All rights reserved. (1990) */
  2.  
  3. #define ATT
  4. #define U370_AIX  
  5.  
  6. /*
  7. ..  additional piece, which probably belongs in a "README" somewhere, is that
  8. AIX/370 installers should use the latest (update U401215) C compiler, which
  9. for some inscrutable reason was hidden when installed ("ls /lib/hc*@" is 
  10. the key to finding it). The symptom for not doing this is that compiling
  11. some of the generated .c files may take hours rather than seconds (!).
  12. */
  13.  
  14. /*  Possible change necessary to c/sfasl.c
  15.     mckenney@rpi.edu reports the following change necessary
  16.     for c/sfasl.c.    I (wfs) compiled all of scratchpad (800 files)
  17.     and ran many tests without it.   I don't have a machine here to
  18.     test on, so I am leaving it out till I get confirmation that it is
  19.     necessary (I hate to mung up c/sfasl.c any more than it is)
  20.  
  21. *** c/sfasl.c~    Mon Aug 13 21:36:52 1990
  22. --- c/sfasl.c    Fri Dec 14 16:25:57 1990
  23. ***************
  24. *** 589,594 ****
  25. --- 589,599 ----
  26.       if(answ)
  27.        {
  28.   #ifdef COFF
  29. + #ifdef _AIX370
  30. +     if (NTYPE(sym) == N_UNDEF)   
  31. +       sym->n_value = answ->address;
  32. +     else 
  33. + #endif 
  34.  
  35. */  
  36.  
  37. #include "att.h"
  38. /* #define HAVE_AOUT */
  39.  
  40. #define EXTERN_N_VALUE_IS_SIZE
  41.  
  42.  
  43.  
  44. #define ADDITIONAL_FEATURES \
  45.              ADD_FEATURE("U370_AIX"); \
  46.                ADD_FEATURE("AIX");\
  47.                ADD_FEATURE("BUGGY-CC");
  48.  
  49. /*
  50. #define USE_C_EXTENDED_DIV
  51. #define USE_C_EXTENDED_MUL
  52. */
  53.  
  54. #undef SET_REAL_MAXPAGE
  55. #define SET_REAL_MAXPAGE \
  56.     real_maxpage= ulimit(3)/PAGESIZE; \
  57.     if (real_maxpage > MAXPAGE) \
  58.         real_maxpage = MAXPAGE;
  59.  
  60. #define N_DATADDR(header) 
  61. #define DATA_BEGIN (char *)header.a_dbase
  62.  
  63.  
  64. /* I don't know why all the bsd versions are subtracting this off
  65.    I thought the header.a_text was the actual size of the text
  66.    not including the header */
  67.  
  68.  
  69. #define LD_COMMAND(command,main,start,input,ldarg,output) \
  70.   sprintf(command, "ld -d -x -A %s -T %x %s %s -o %s", \
  71.             main,start,input,ldarg,output)
  72. /* smallest address data can occur */
  73. #define DBEGIN  0x200000
  74.   
  75.  
  76. #define SYM_UNDEF_P(sym) (((sym)->n_sclass & N_SECT) ==  N_UNDF)
  77.  
  78.               /* the section like N_ABS,N_TEXT,.. */
  79.  
  80. /* #define N_TYPE N_SECT   */
  81.  
  82. /* the header is regared as part of the text */
  83. #define N_RELOFF(header) A_TRELPOS(header)
  84.  
  85. #define SYMNMLEN 8
  86. #define BIG_ENDIAN 
  87.  
  88. #define USE_C_EXTENDED_DIV
  89. #define USE_C_EXTENDED_MUL
  90.  
  91.  
  92.   /* the beginning of the string table: first long will be size of string
  93.      table */
  94.  
  95. #define ISCOFF(x) (((x) == I386MAGIC) \
  96.          || ((x) == U370ROMAGIC) \
  97.          || ((x) == U370WRMAGIC) \
  98.          || ((x) == XA370ROMAGIC) \
  99.          || ((x) == XA370WRMAGIC) \
  100.          )
  101.  
  102.  
  103. #define RELOC_FILE "rel_u370aix.c"
  104.  
  105. #define GETCWD
  106.   /* the system defines a different getwd */
  107. #define getwd ourgetwd
  108.  
  109. #ifdef IN_UNIXFSYS
  110. #endif
  111.  
  112. #ifdef IN_NUM_CO
  113. #include <float.h>
  114. #define S3000
  115. #endif
  116. #undef IEEEFLOAT
  117.  
  118.   
  119. /* these two symbols are too long for the rt pl8cc compiler */
  120.   
  121. #define check_type_or_pathname_string_symbol_stream  check_type_or_path_or_strm
  122. #define check_type_or_Pathname_string_symbol check_type_or_path_sym
  123. #define TSor_pathname_string_symbol_stream  TSor_path_string_sym_strm  
  124. #define check_type_or_symbol_string_package check_type_or_sym_str_pack  
  125. #define siLmake_string_output_stream_from_string siLma_str_from_string
  126. #define SYM_EXTERNAL_P(p) ((p)->n_sclass == C_EXT)
  127.  
  128. #undef IF_ALLOCATE_ERR
  129.  
  130.  
  131. /* the u370 likes to allocate a little extra at startup
  132.    via its own call to sbrk (not malloc)
  133.   */
  134.  
  135. char *sdebug;
  136. #define IF_ALLOCATE_ERR \
  137.     if (core_end != sbrk(0))\
  138.          {int ll;   \
  139.        if ((ll=(int)(sbrk(0) - core_end))  < PAGESIZE) \
  140.            {sbrk(PAGESIZE - ll); \
  141.             type_map[page(core_end)] = t_other; \
  142.             core_end = sbrk(0); }\
  143.           else  \
  144.         error("Someone allocated my memory!");} \
  145.     if (core_end != (sdebug=sbrk(PAGESIZE*(n - m))))
  146.  
  147.  
  148.  
  149. #define FIND_INIT \
  150. { if (*ptr==0 && (sym->n_scnum == TEXT_NSCN ) && sym->n_value ) \
  151.   { char tem [9]; \
  152.     char *str=SYM_NAME(sym); \
  153.      dprintf(find init: %s ,str); \
  154.   if (str[1]=='i'    && str[2]=='n'  && str[3]=='i' && str[4]== 't' \
  155.       && str[5]=='_' && str[0]== '_' &&  str[strlen(str)-1] !='X')  \
  156.     *ptr=  sym->n_value ; \
  157.    else {/* printf("The first data symbol was not the init");*/}  \
  158.  }}
  159.  
  160.  
  161. /*  The system sbrk is not quite right in that it skips some times.
  162.     so we define one in rel_u370aix.c
  163. */    
  164.   
  165. #define sbrk sbrk1
  166. extern char * sbrk1();
  167.  
  168. #define UNIXSAVE "saveu370.c"
  169.  
  170. /* fool the metaware compiler bug.   This should be removed
  171. when they fix it
  172. { SAFE_INC(big->c.c_car,l) ;
  173.    if (big->c.c_car < 0) ..
  174.      was branching incorrectly in case the two positives added to a negative
  175. */
  176. #define SAFE_INC(u,amt) do{volatile unsigned int xTmp = u; xTmp += amt; u = (int) xTmp;}while(0)
  177. #define SAFE_DEC(u,amt) do{volatile unsigned int xTmp = u; xTmp -= amt; u = (int) xTmp;}while(0)
  178.  
  179. #define HAVE_XDR
  180.  
  181.  
  182. /* Begin for cmpinclude */
  183. /* #define HAVE_ALLOCA */
  184.  
  185. /* End for cmpinclude */
  186.  
  187.  
  188.     
  189.